// 纯净的XLS导入功能测试
// 不依赖于statistics.js中的其他函数

// 检查SheetJS库是否加载
console.log('SheetJS库是否可用:', typeof XLSX !== 'undefined');

// 如果可用，测试XLS解析
if (typeof XLSX !== 'undefined') {
    console.log('SheetJS版本:', XLSX.version || '未知');
    
    // 模拟文件读取函数
    function testXlsImport() {
        // 创建一个简单的工作簿进行测试
        const wb = XLSX.utils.book_new();
        const ws = XLSX.utils.aoa_to_sheet([
            ['date', '客户名称', '商品', '金额'],
            ['2023-10-01', '客户A', '产品A(10kg)', 1000],
            ['2023-10-01', '客户B', '产品B(5kg)', 500]
        ]);
        XLSX.utils.book_append_sheet(wb, ws, '测试数据');
        
        // 转换为数组缓冲区以模拟文件读取
        const wbout = XLSX.write(wb, { bookType: 'xls', type: 'array' });
        
        // 测试解析
        try {
            const workbook = XLSX.read(wbout, { type: 'array' });
            const firstSheetName = workbook.SheetNames[0];
            const worksheet = workbook.Sheets[firstSheetName];
            const jsonData = XLSX.utils.sheet_to_json(worksheet);
            console.log('解析结果:', jsonData);
            
            // 复制formatExcelRecords函数的核心逻辑
            const records = formatTestRecords(jsonData);
            console.log('格式化后的记录:', records);
        } catch (error) {
            console.error('解析测试数据失败:', error);
        }
    }
    
    // 模拟formatExcelRecords函数的核心逻辑
    function formatTestRecords(jsonData) {
        const records = [];

        jsonData.forEach(row => {
            // 尝试获取必要的字段
            const date = row.date || row.日期;
            // 兼容两种字段名格式：customerName、customer和客户名称
            const customerName = row.customerName || row.customer || row.客户名称;
            // 兼容products和商品字段
            let products = row.products || row.商品;

            if (date && customerName && products) {
                // 如果products是字符串
                if (typeof products === 'string') {
                    // 尝试解析为JSON
                    try {
                        products = JSON.parse(products);
                    } catch (e) {
                        // 如果JSON解析失败，尝试解析导出的字符串格式
                        try {
                            products = parseProductString(products);
                        } catch (e2) {
                            console.error('解析商品数据失败:', row, e2);
                            return;
                        }
                    }
                }

                // 确保products是数组
                if (!Array.isArray(products)) {
                    console.error('商品数据不是数组:', row);
                    return;
                }

                // 格式化记录
                const record = {
                    date: date,
                    customerName: customerName,
                    products: products,
                    totalAmount: parseFloat(row.totalAmount || row.金额 || 0)
                };

                records.push(record);
            }
        });

        return records;
    }
    
    // 模拟parseProductString函数
    function parseProductString(productStr) {
        const products = [];
        // 匹配格式：商品名称(重量kg)
        const regex = /([^()]+)\((\d+(?:\.\d+)?)kg\)/g;
        let match;

        while ((match = regex.exec(productStr)) !== null) {
            const name = match[1].trim();
            const weight = parseFloat(match[2]);
            // 假设价格为0，实际使用时可能需要从其他地方获取
            products.push({ name, weight, price: 0 });
        }

        return products;
    }
    
    // 运行测试
    testXlsImport();
} else {
    console.log('请确保已加载SheetJS库');
}